home *** CD-ROM | disk | FTP | other *** search
- // ------------- key.cpp
-
- #include "parody.h"
-
- // ============================================
- // base Key class member functions
- // ============================================
-
- Key::Key(NodeNbr fa) : LinkedListEntry(NULL)
- {
- fileaddr = fa;
- lowernode = 0;
- relatedclass = -1;
- classid = 0;
- indexno = 0;
- if (Persistent::thispers != NULL) {
- // --- register the key with the object being built
- object = Persistent::thispers;
- AppendListEntry(&object->keys);
- classid = object->objhdr.classid;
- indexno = object->indexcount++;
- }
- }
-
- // ------ overloaded =
- Key& Key::operator=(Key& key)
- {
- if (this != &key) {
- fileaddr = key.fileaddr;
- lowernode = key.lowernode;
- indexno = key.indexno;
- classid = key.classid;
- relatedclass = key.relatedclass;
- }
- return *this;
- }
-
- // --------- a key declares itself primary
- void Key::PrimaryKey()
- {
- if (indexno != 0 && Persistent::thispers != NULL) {
- DeleteListEntry();
- PrependListEntry();
- Key *key = (Key *) NextListEntry();
- while (key != NULL) {
- if (++(key->indexno) == indexno)
- break;
- key = (Key *)(key->NextListEntry());
- }
- indexno = 0;
- Persistent::thispers->RecordObject();
- }
- }
-